package com.shycloud.mido.opter.mapper;

import com.baomidou.mybatisplus.annotation.SqlParser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.shycloud.mido.opter.api.dto.ListItemDTO;
import com.shycloud.mido.opter.api.dto.OptSearchDTO;
import com.shycloud.mido.opter.api.dto.SysUserDto;
import com.shycloud.mido.opter.api.entity.OptOperator;
import com.shycloud.mido.opter.api.vo.OptAndOrgVO;
import com.shycloud.mido.opter.api.vo.OptOperatorVO;
import com.shycloud.mido.opter.api.vo.SaleOrgListVO;
import com.shycloud.mido.opter.api.vo.SaleOrgOptListVO;
import java.util.Set;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface NewOperatorMapper extends BaseMapper<OptOperator> {

	int createSysUser(@Param("user") SysUserDto user);

	int createSysUserRole(@Param("userId") String userId);

	IPage<OptOperatorVO> getProvincePage(IPage<OptOperatorVO> page,
			@Param("query") OptSearchDTO query);

	IPage<OptOperatorVO> getCityPage(IPage<OptOperatorVO> page, @Param("query") OptSearchDTO query);

	int belongTo(@Param("targetId") Integer targetId, @Param("ids") Set<Integer> ids);

	int belongToOrg(@Param("targetId") Integer targetId, @Param("ids") Set<Integer> ids);

	int cancelBelongToOpt(@Param("targetId") Integer targetId);

	int cancelBelongToOrg(@Param("targetId") Integer targetId);

	List<ListItemDTO> getProvinceBelong(@Param("id") Integer id);

	List<ListItemDTO> getCityBelong(@Param("id") Integer id);

	List<ListItemDTO> getProvinceNoBelong(@Param("province") String province);

	List<ListItemDTO> getCityNoBelong(@Param("city") String city, @Param("name") String name);

	List<ListItemDTO> getProvinceNoBelongByNameOrPhone(@Param("keyWord") String keyWord);

	List<ListItemDTO> getCityNoBelongByNameOrPhone(@Param("keyWord") String keyWord);

	String getOptMemberNumber(@Param("optId") String optId);

	String getOptOrgNumber(@Param("optId") String optId);

	String getProvinceOptNumber();

	String getCityOptNumber();

	String getCityOptNumberByParentId(@Param("optId") Integer optId);

	/**
	 * 获取市运营商列表
	 *
	 * @param page
	 * @param name
	 * @param phone
	 * @return
	 * @author nianhua.jiang
	 * @date 2020/9/25 16:40
	 **/
	IPage<OptAndOrgVO> getCityOptList(@Param("page") Page page, @Param("name") String name,
			@Param("phone") String phone);

	/**
	 * 获取省运营商列表
	 *
	 * @param page
	 * @param name
	 * @param phone
	 * @return
	 * @author nianhua.jiang
	 * @date 2020/9/25 16:40
	 **/
	IPage<OptAndOrgVO> getProvinceOptList(@Param("page") Page page, @Param("name") String name,
			@Param("phone") String phone);

	/**
	 * 获取机构工作室列表
	 *
	 * @param page
	 * @param name
	 * @param phone
	 * @return
	 * @author nianhua.jiang
	 * @date 2020/9/25 16:40
	 **/
	IPage<OptAndOrgVO> getOrgList(@Param("page") Page page, @Param("name") String name,
			@Param("phone") String phone);

	IPage<OptAndOrgVO> getDistList(
			@Param("page") Page page, @Param("name") String name, @Param("phone") String phone);

	String getOrgCityById(@Param("id") Integer id);

	int checkActvCode(@Param("actvCode") String actvCode);

	int hasActeCode(@Param("actvCode") String actvCode);

	int cancelBelongToHeadquarters(@Param("ids") Set<Integer> ids);

	String getOptCityById(@Param("id") Integer id);

	@SqlParser(filter = true)
	List<SaleOrgListVO> getSaleOrgList(@Param("optId") Integer optId);

	@SqlParser(filter = true)
	SaleOrgListVO getSaleOrgListTemp2(@Param("orgId") Integer orgId);

	String getOrgPhoneByOrgId(@Param("orgId") Integer orgId);

	String getOrgNameByOrgId(@Param("orgId") Integer orgId);

	List<SaleOrgListVO> getSaleRecommendOrgList(@Param("orgId") Integer orgId);
}
